草庐IT

C++ 指向 vector 的指针

全部标签

c++ - 创建指向类对象的指针数组

问题:创建一个至少包含四个指向Reader对象的指针的数组。使用New运算符创建至少四个指向派生类对象的指针并将它们分配给数组。我不确定我是否做对了。Reader是基类。John、David、Daniel、Mark是派生类intmain(void){Reader*obj[4];obj[0]=newJohn();obj[1]=newDavid();obj[3]=newDaniel();obj[2]=newMark();}这样对吗??? 最佳答案 您的代码正确。正如@sharptooth建议的那样,在分配的obj[]上练习delete。

c++ - 函数指针和模板

为什么下面的代码有效?classfoo{public:templateintMap(Ffunction)const{returnfunction(2);}};intDouble(intn){return2*n;}intmain(){foof;intn=f.Map(Double);}我的理解是接受函数指针的函数必须有这样的格式:voidfoo(int(*ptf)(int))所以Map函数应该是这样的intMap(int(*ptf)(int)){return(*ptf)(2);}它是否以某种方式在运行时或编译时通过模板解析函数?以上代码在vc++2010编译运行

c++ - 指向 const 类型的 const 指针的模板特化

我正在阅读http://bartoszmilewski.wordpress.com/2009/10/21/what-does-haskell-have-to-do-with-c/并遇到这段代码来检查类型是否为指针:templatestructisPtr{staticconstboolvalue=false;};templatestructisPtr{staticconstboolvalue=true;};templatestructisPtr{staticconstboolvalue=true;};我如何专门化通用模板来处理指向const类型的const指针的情况?如果我这样做:std

c++ - 为什么使用一个 vs 另一个 : `boost::shared_array` VS `boost::shared_ptr<std::vector>` ?

因此,要处理用于图像或类似内容的大内存块,显然有很多选择。因为我是智能指针和RAII的粉丝,所以我想知道它是否更智能:一个shared_ptr到一个std::vector或使用指向动态分配数组的shared_array。选择一个与另一个相比,在概念、实践和性能方面的影响是什么? 最佳答案 这与比较std::vector与C数组相同。将shared_array视为RAIIC数组。你得到的只是自动内存释放。在处理返回数组的第3方代码时很有用。理论上它在某些边缘情况下比std::vector更快,但灵active和安全性要差得多。std:

c++ - 指针和数据之间的 union ,可能存在的陷阱?

我正在编写一个系统,该系统具有大量冗余数据,需要将这些数据保存在内存中,并以尽可能短的延迟进行访问。(未压缩,数据保证至少占用1GB内存)。我想到的一种方法是创建如下所示的容器类:classChunk{public:Chunk(){...};~Chunk(){/*carefullydeleteelementsaccordingtomask*/};getElement(intindex);setElement(intindex);private:unsignedcharmask;//onbit==dataisnot-redundant,arrayis8x8,64elementsunion

c++ - 通用函数指针

有些类有如下方法:intgetSomething1();std::stringgetSomething2();someClassgetSomething3();有描述此类字段的结构,例如:{"nameoffield",pointertogetter,std::type_info}那么我想按如下方式使用它:if(type==int){field_int=(int)getter();}elseif(type==std::string){field_string=(std::string)getter();}etc.如何改造getterslikeintgetSomething1();std:

c++ - 在用户插入数据之前创建结构对象时,Vector 返回乱码

我在练习使用指针时偶然发现了一些我不理解的东西。该程序执行以下操作:创建一个vector将vector的地址传递给函数那个函数有一个for循环在该for循环中,要求用户提供电影名称收到电影名称后,将创建一个新的电影对象(来自结构)为每部电影创建一个新的boost线程,传递用户制作的标题以及新电影对象和vector的指针。在boost线程中,电影对象的“title”变量被赋予用户制作的标题,然后电影被添加到vector中当所有线程都完成后,“main”函数内的for循环会显示vector中存储的所有电影标题。当我交换这两个时出现问题//Getinfoaboutnewmoviefromus

c++ - 我可以使用指针访问多维数组吗?

来自this引用,在C中似乎未定义以下行为。intmy_array[100][50];int*p=my_array[0];p[50];//UBC++03或C++11中是否有引用资料证实了这一点? 最佳答案 在+运算符的描述中是的。您不能在C中取消引用该指针,因为它是第一个子数组的结束指针。在C++中,这目前是合法的,因为指针指向一个有效的整数(指向关系的点在第3节的某处定义)。然而,在这两个标准中,添加超过50个会产生未定义的行为。最近向c++委员会发送了一份DR,内容涉及取消引用此类“凭空有效”指针可能会被取消引用的规则,因此我不

c++ - cl::vector 与 std::vector:不同的迭代器行为

编辑:按照PlasmaHH的建议添加了带有内存位置的调试输出。我不明白cl::vector在OpenCL的C++绑定(bind)中的不同行为。考虑以下代码:标题Top.hpp:classTop{public:voidsetBool(boolb);boolgetBool();private:boolstatus;};来源Top.cpp:#include"Top.hpp"voidTop::setBool(boolb){std::cout使用上面的:#define__NO_STD_VECTOR#include#include"CL/cl.hpp"#include"Top.hpp"usingn

c++ - 在 UML 中绘制智能指针

在UML类图中是否有一种普遍接受的方式来描述共享指针(boost::shared_ptr或std::shared_ptr)持有的对象?特别是,应该使用像聚合或组合这样的空钻石还是全钻石? 最佳答案 我不知道关于如何将智能指针建模为关系的总体共识。黑色菱形表示控制生命时间,白色菱形表示不控制生命时间,因此您可以在本地同意unique_ptr使用黑色菱形,shared_ptr全黑菱形,weak_ptr使用白色菱形。如果你真的想为smart_ptr建模,我建议给关系添加一个属性类:0|/----------------\+--+share